/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gcs.Negocio;

import java.util.TreeMap;

/**
 *
 * @author Pedro
 */
public class Servico {

    //variáveis
    private static int contador=0;
    private String codServ;
    private String nomeServ;
    private String desc;
    private boolean activo;
    private TreeMap<String,Actividade> lAct;

    //construtores
    public Servico (){
        increaseContador();
        this.codServ="S"+contador;
        this.nomeServ="";
        this.desc="";
        this.activo=true;
        this.lAct=new TreeMap<String, Actividade>();
    }

    public Servico (boolean x){
        this.codServ="S"+contador;
        this.nomeServ="";
        this.desc="";
        this.activo=true;
        this.lAct=new TreeMap<String, Actividade>();
    }

   public Servico(String nome,String desc,boolean act){
        increaseContador();
        this.codServ="S"+contador;
        this.nomeServ=nome;
        this.desc=desc;
        this.activo=act;
        this.lAct=new TreeMap<String, Actividade>();
    }

   public Servico(String cod,String nome,String desc,boolean act,TreeMap<String,Actividade>lActiR){
        this.codServ=cod;
        this.nomeServ=nome;
        this.desc=desc;
        this.activo =act;
        this.lAct=lActiR;
    }

    public Servico(Servico s){
        this.codServ=s.getcodServ();
        this.nomeServ=s.getNome();
        this.desc=s.getDesc();
        this.activo =s.getActivo();
        this.lAct=new TreeMap<String, Actividade>(s.getActividades());
    }

    //Métodos

    //Gets
    public String getcodServ(){return this.codServ;}
    public String getNome(){return this.nomeServ;}
    public String getDesc(){return this.desc;}
    public static int getContador(){return contador;}
    public boolean getActivo(){return this.activo;}
    public TreeMap<String,Actividade> getActividades(){
        return lAct;
    }

    //Sets
    public void setcodServ(String cod){this.codServ=cod;}
    public void setNome(String nome){this.nomeServ=nome;}
    public void setDes(String d){this.desc=d;}
    public static void setContador(int cont){contador=cont;}
    public void setActivo(boolean act){this.activo=act;}
    public void setActividades(TreeMap<String,Actividade> l){
        this.lAct=l;
    }
    //Restantes
    public static void increaseContador(){contador+=1;}
    //clone
    @Override
    public Servico clone(){return new Servico(this);}
    //Equals
    @Override
    public boolean equals(Object o){
        if(this == o)return true;
        if((o==null) || this.getClass()!=o.getClass())return false;
        Servico s = (Servico)o;
        TreeMap<String,Actividade> lRecebida = new TreeMap<String, Actividade>(s.getActividades());
        for(Actividade a : lRecebida.values())
            for(Actividade b : this.lAct.values())
                if(!b.equals(a))
                    return false;
        return (this.codServ.equals(s.getcodServ())
                && this.desc.equals(s.getDesc())
                && this.nomeServ.equals(s.getNome())
                && this.activo==s.getActivo());
    }
    public String toString(){return codServ+": "+nomeServ;}
}
